package com.excu.utils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;

/**
 * 加密接口控制器，仅对特定接口应用解密逻辑
 */
@RestController
@RequestMapping("/encrypted")
public class EncryptedApiController {

    // 密钥（实际项目中应放在配置文件或密钥管理服务中）
    private static final String SECRET_KEY = "MySecretKey123456";
    // 初始化解密处理器（可通过Spring注入，避免重复创建）
    private final ServerDecryptHandler decryptHandler = new ServerDecryptHandler(SECRET_KEY);
    Logger logger = LoggerFactory.getLogger(this.getClass());
    /**
     * 特定加密接口：仅该接口会对请求进行解密处理
     */
    @PostMapping("/user-login")
    public Map<String, Object> handleEncryptedRequest(HttpServletRequest request) {


        Map<String, Object> response = new HashMap<>();
        try {
            // 1. 解密请求数据（仅当前接口需要解密）
            String originalData = decryptHandler.handleRequest(request);
            logger.info("解密后的原始数据：" + originalData);

            // 2. 处理业务逻辑（例如解析JSON、操作数据库等）
            // 这里可以用Gson/Jackson将originalData解析为实体类
            // UserInfo userInfo = new Gson().fromJson(originalData, UserInfo.class);

            // 3. 构建响应
            response.put("code", 200);
            response.put("msg", "加密接口处理成功");

        } catch (Exception e) {
            response.put("code", "500");
            response.put("msg", "解密或处理失败：" + e.getMessage()+"。请访问：");
        }
        return response;
    }


}
    